package com.divemotor.ventarepuestosinternet.dao.impl;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.divemotor.ventarepuestosinternet.beans.adapter.DataAdapter;
import com.divemotor.ventarepuestosinternet.dao.PerfilDAO;
import com.divemotor.ventarepuestosinternet.model.Perfil;
import com.divemotor.ventarepuestosinternet.util.Constantes;

@Repository("perfilDAO")
@SuppressWarnings("unchecked")
public class PerfilDAOImpl implements PerfilDAO, Serializable {

	private static final long serialVersionUID = -214293659967504158L;
	
	@Autowired
	private SessionFactory sessionFactory;

	@Override
	public List<Perfil> listarTodos() {
        Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Perfil.class,"perfil");
        criteria.createAlias("perfil.sistema","sistema");
        criteria.add(Restrictions.eq("sistema.idSistema",Constantes.ID_SISTEMA_ACTUAL));
        criteria.add(Restrictions.not(Restrictions.eq("idPerfil",Constantes.ID_PERFIL_CLIENTE)));
		return criteria.list();
	}

	@Override
	public List<DataAdapter> listarPerfilesAdapter(){
		Query q = sessionFactory.getCurrentSession().getNamedQuery("Perfil.getData");
		q.setParameter("idSistema", Constantes.ID_SISTEMA_ACTUAL);
		q.setParameter("idPerfil", Constantes.ID_PERFIL_CLIENTE);
		return q.list();
	}
}
